home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / exampleCode / viewkit / VCal / VCal.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-02  |  8.1 KB  |  232 lines

  1. /*
  2.  * Copyright (C) 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #ifndef _VCAL_
  18. #define _VCAL_
  19.  
  20. #include <stdio.h>
  21. #include <sys/types.h>
  22. #include <sys/stat.h>
  23. #include <Vk/VkWindow.h>
  24. #include "Entry.h"
  25. #include "Utils.h"
  26.  
  27. #define VERSION_NUMBER        5
  28. #define DEFAULT_FILENAME    "~/.vcal"
  29.  
  30. class DayView;
  31. class MonthOverview;
  32. class WeekOverview;
  33. class MemoryInfo;
  34. class RepeatingEntry;
  35. class VkRepeatButton;
  36. class VkPopupMenu;
  37. class VkMenu;
  38. class PrefDialog;
  39. class Preferences;
  40. class PrintPS;
  41. class VkQuestionDialog;
  42. class VkPrefToggle;
  43. class VkPrefRadio;
  44.  
  45. class VCal : public VkWindow {
  46.  
  47. public:
  48.  
  49.   VCal(const char *docName);
  50.   ~VCal();
  51.  
  52.   virtual const char* className();
  53. //  virtual void show();
  54.  
  55.   void deleteDayView(DayView *obj);
  56.   void dayViewChanged(DayView *obj, Entry *entry, Entry *oldEntry);
  57.   void addRepeatingEntry(RepeatingEntry *rentry);
  58.   void removeRepeatingEntry(RepeatingEntry *rentry);
  59.   void selectDay(int day, int month, int year);
  60.   void selectToday() { selectDay(nowDay, nowMonth, nowYear); }
  61.   void prefChanged();
  62.   Pixel annotateColor() { return annotateBg; }
  63.   Pixel normalColor() { return dayAreaBg; }
  64.   Pixel foregroundColor() { return dayAreaFg; }
  65.   Pixel nonHighlightColor() { return nonHighlight; }
  66.   void saveAsTextMenu(Boolean todayDefault, VkSimpleWindow *parent,
  67.               int day, int month, int year);
  68.   MemoryInfo *findDateInfo(int day, int month, int year);
  69.   RepeatingEntry *getRepeatingEntries() { return repeatingEntries; }
  70.   XmFontList getLabelFont() { return labelFont; }
  71.   Pixmap getTile() { return tile; }
  72.   void getToday(int *day, int *month, int *year);
  73.   void displayWeekOverview();
  74.   DayView *getDayView() { return dayView; }
  75.   void emitDay(FILE *fd, int day, int month, int year);
  76.   void emitWeek(FILE *fd, int day, int month, int year);
  77.   void emitMonth(FILE *fd, int day, int month, int year);
  78.   void initCollect();
  79.   void collectSingleEntry(Entry *entry);
  80.   int collectedCount();
  81.   void sortCollection();
  82.   Entry *collectedEntry(int index) { return entries[index]; }
  83.   PrintPS *getPrint();
  84.  
  85. protected:
  86.  
  87.   void updateDisplay(Boolean read);
  88.   Boolean okToQuit();
  89.   virtual Widget setUpInterface(Widget parent);
  90.   virtual void handleWmDeleteMessage();
  91.   void afterRealizeHook();
  92.   void fileMenu(VkMenu *menu);
  93.   void displayMenu(VkMenu *menu);
  94.   void monthMenu(VkMenu *menu);
  95.   void helpMenu(VkMenu *menu);
  96.   void createDayArea(Widget parent);
  97.   void createDayWidgets(Widget parent);
  98.   void setDisplayDate(int day, int month, int year);
  99.   void displayDays(int offset, int num);
  100.   void displayHeader(int day, int month, int year);
  101.   void handleTimeOut();
  102.   void intervalUpdate();
  103.   void checkDate(struct tm *now);
  104.   void updateClock(struct tm *now);
  105.   void updateTheIconName(struct tm *now);
  106.   void displayToday();
  107.   void doMonthPrev(Widget w, XtPointer client_data, XtPointer call_data);
  108.   void doMonthNext(Widget w, XtPointer client_data, XtPointer call_data);
  109.   void daySelect(int day);
  110.   void weekSelect(int day);
  111.   void annotateDays(int num);
  112.   Boolean readFile();
  113.   Boolean readDay(FILE *fd, MemoryInfo *parent, int version);
  114.   void scheduleWriteFile();
  115.   Boolean writeFile();
  116.   void loadMenu();
  117.   void saveAsMenu();
  118.   void saveAsTextOK();
  119.   void saveAsTextCancel();
  120.   void displayMonthOverview();
  121.   void displayWeekOverview(int day, int month, int year);
  122.   void monthPrint();
  123.   void prefMenu();
  124.   void factoryMenu();
  125.   void checkAlarms(int t);
  126.   void checkDayAdvanceAlarms();
  127.   void postAlarm(Entry *entry, int day, int month, int year,
  128.          Boolean late = False);
  129.   void clearData();
  130.   void selectMonth(int month);
  131.   void resizeDay();
  132.   void displayActionsPopup(XButtonPressedEvent *);
  133.   void updateFileStat();
  134.   void checkFileStat();
  135.   Boolean fileChanged();
  136.   void inhibitCheckFile() { checkInhibited = True; }
  137.   void allowCheckFile() { checkInhibited = False; }
  138.   void checkFileSoon();
  139.   void markTodayFired(struct tm *now, Boolean lates);
  140.   void snoozeAlarm(Entry *entry);
  141.   void handleSnooze(XtIntervalId id);
  142.   void alarmDismiss(EntryAlarmInfo *info);
  143.   void alarmDelete(EntryAlarmInfo *info);
  144.   void alarmSnooze(EntryAlarmInfo *info);
  145.   void scheduleDialogDelete(VkQuestionDialog *dialog);
  146.   void handleEntryAlarm(Entry *entry, int day, int month, int year,
  147.             Boolean late = False);
  148.   void sendMailNotification(Entry *entry, int day, int month, int year,
  149.                 Boolean late = False);
  150.   Boolean emitSingleDay(FILE *fd, int day, int month, int year,
  151.             Boolean headerAlways, Boolean formatYear,
  152.             char *prefix);
  153.   void emitCollectedEntries(FILE *fd);
  154.   void changeDayView(int day, int month, int year);
  155.   
  156.   static void load_menu(Widget w, XtPointer client_data, XtPointer call_data);
  157.   static void save_menu(Widget w, XtPointer client_data, XtPointer call_data);
  158.   static Boolean write_file(XtPointer client_data);
  159.   static void saveas_menu(Widget w, XtPointer client_data,
  160.               XtPointer call_data);
  161.   static void save_text(Widget w, XtPointer client_data, XtPointer call_data);
  162.   static void display_overview(Widget w, XtPointer client_data,
  163.                    XtPointer call_data);
  164.   static void week_overview(Widget w, XtPointer client_data,
  165.                 XtPointer call_data);
  166.   static void month_print(Widget w, XtPointer client_data,
  167.               XtPointer call_data);
  168.   static void savetext_ok(Widget w, XtPointer client_data,
  169.               XtPointer call_data);
  170.   static void savetext_cancel(Widget w, XtPointer client_data,
  171.                   XtPointer call_data);
  172.   static void pref_menu(Widget w, XtPointer client_data,
  173.             XtPointer call_data);
  174.   static void factory_menu(Widget w, XtPointer client_data,
  175.                XtPointer call_data);
  176.   static void quit_menu(Widget w, XtPointer client_data, XtPointer call_data);
  177.   static void save_quit(Widget w, XtPointer client_data, XtPointer call_data);
  178.   static void timeout_proc(XtPointer client_data, XtIntervalId *id);
  179.   static void snooze_proc(XtPointer client_data, XtIntervalId *id);
  180.   static void month_select(Widget w, XtPointer client_data, XEvent *event);
  181.   static void day_select(Widget w, XtPointer client_data, XtPointer call_data);
  182.   static void month_popup(Widget w, XtPointer client_data,
  183.               XtPointer call_data);
  184.   static void resize_day(Widget w, XtPointer client_data, XEvent *event,
  185.              Boolean *);
  186.   static Boolean check_file(XtPointer client_data);
  187.   static Boolean dialog_delete(XtPointer client_data);
  188.   static void alarm_dismiss(Widget w, XtPointer client_data,
  189.                 XtPointer call_data);
  190.   static void alarm_delete(Widget w, XtPointer client_data,
  191.                XtPointer call_data);
  192.   static void alarm_snooze(Widget w, XtPointer client_data,
  193.                XtPointer call_data);
  194.  
  195.   Widget form, monthHeader, dayArea;
  196.   Widget dayHeaders[DAYS_IN_WEEK], dayWidgets[MAX_DAYS], clockLabel, hidden;
  197.   VkPopupMenu *actionsPopup;
  198.   VkRepeatButton *monthPrev, *monthNext;
  199.   int month, year, nowDay, nowMonth, nowYear;
  200.   Pixel dayAreaBg, dayAreaFg, nonHighlight;
  201.   Boolean displayingCurrent;
  202.   DayView *dayView;
  203.   MonthOverview *monthOverview;
  204.   WeekOverview *weekOverview;
  205.   MemoryInfo *dayInfo, *today;
  206.   int numDays, numRepeats;
  207.   Widget annotateButton, normalButton;
  208.   int dayOffset;
  209.   Boolean dirty;
  210.   RepeatingEntry *repeatingEntries;
  211.   Dimension buttonBorder;
  212.   struct stat lastFileStat;
  213.   Boolean checkInhibited;
  214.   Boolean updating;
  215.   Preferences *pref;
  216.   Boolean showLates;
  217.   PrefDialog *prefDialog;
  218.   Boolean iconIsTime, iconIsDate;
  219.   Pixel annotateBg;
  220.   VkPrefRadio *radioText;
  221.   VkPrefToggle *dayText, *weekText, *monthText;
  222.   int saveDay, saveMonth, saveYear;
  223.   int numCollect;
  224.   Entry **entries;
  225.   XmFontList labelFont;
  226.   Pixmap tile;
  227.   PrintPS *print;
  228.   XtWorkProcId writeID;
  229. };
  230.  
  231. #endif
  232.